﻿using System.Collections.Generic;
using AccesoData;
using Entidades;
using NUnit.Framework;

namespace Pruebas.PruebasDao
{
    [TestFixture]
    class PruebaDaoRecaudoRamo:CrearEntidades
    {
        [TestCase]
        public void AgregarRecaudoRamo()
        {
            Recaudo recaudo = FabricaEntidades.ObtenerRecaudo();
            Ramo ramo = FabricaEntidades.ObtenerRamo();

            ramo.Id = DatosRamoTipo("pruebaRamoRecaudo");

            recaudo.Nombre = "prueba";
            recaudo.Id =
                DAO.ObtenerFabrica(1).ObtenerDaoRecaudo().AgregarRecaudo(recaudo);
            
            ramo.Recaudos.Add(recaudo);

            int id =
              DAO.ObtenerFabrica(1).ObtenerDaoRecaudoRamo().AgregarRecaudoRamo(recaudo, ramo);
            Assert.AreNotEqual(-1,id);
        }

        [TestCase]
        public void PruebaObtenerRecaudoRamo()
        {
            List<Recaudo> lista = new List<Recaudo>();
            Recaudo recaudo = FabricaEntidades.ObtenerRecaudo();
            Recaudo recaudo2 = FabricaEntidades.ObtenerRecaudo();
            Ramo ramo = FabricaEntidades.ObtenerRamo();

            ramo.Id = DatosRamoTipo("pruebaRamoRecaudo");

            recaudo.Nombre = "prueba";
            recaudo.Id =
                DAO.ObtenerFabrica(1).ObtenerDaoRecaudo().AgregarRecaudo(recaudo);
            
            recaudo2.Nombre = "prueba2";
            recaudo2.Id =
                DAO.ObtenerFabrica(1).ObtenerDaoRecaudo().AgregarRecaudo(recaudo2);
            
            ramo.Recaudos.Add(recaudo);
            ramo.Recaudos.Add(recaudo2);

            DAO.ObtenerFabrica(1).ObtenerDaoRecaudoRamo().AgregarRecaudoRamo(recaudo, ramo);
            DAO.ObtenerFabrica(1).ObtenerDaoRecaudoRamo().AgregarRecaudoRamo(recaudo2, ramo);
            lista =
                DAO.ObtenerFabrica(1).ObtenerDaoRecaudoRamo().ObtenerRecaudosRamo(ramo);

            
            Assert.IsNotNull(lista);
            Assert.IsNotEmpty(lista);

            Assert.AreEqual(ramo.Recaudos[0].Id,lista[0].Id);
            Assert.AreEqual(ramo.Recaudos[1].Id, lista[1].Id);

            Assert.AreEqual(ramo.Recaudos[0].Nombre, lista[0].Nombre);
            Assert.AreEqual(ramo.Recaudos[1].Nombre, lista[1].Nombre);
        }
    }
}
